tg-me.com/golang_books/960
Last Update:
Π ΡΠ²Π΅ΠΆΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΠΈΠΊΠΈΡΡ ΠΡΡΠΎΠ²Π° ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠ΅ΠΉΡ: Π±Π΅Π· ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π±Π΅Π· Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΈ Π±Π΅Π· ΠΌΠ°Π³ΠΈΠΈ ΠΎΠ±Π»Π°ΠΊΠ° β Π²ΡΠ΅Π³ΠΎ Π·Π° ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ GoβΡΠ΅ΡΠ²ΠΈΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ MacBook Pro M3 Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 200000 Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Ρ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΡΠΌ P50 < 1 ΠΌΡ. ΠΠΎΡ Π³Π»Π°Π²Π½ΡΠ΅ ΠΏΡΠΈΡΠΌΡ:
1β£ Π‘Π²ΠΎΠ΄ΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Β«Π³ΠΎΡΡΡΠ΅Π³ΠΎΒ» ΠΏΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ
- Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ΅ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠ΄ β ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, Π±Π΅Π· ΠΠ/API.
- ΠΠΎΠ»Ρ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ β Π½ΠΈΠΊΠ°ΠΊΠΈΡ
new/make Π² Π³ΠΎΡΡΡΠ΅ΠΌ ΠΏΡΡΠΈ.
2β£ net/http β fasthttp
- ΠΡΡΡΡΠ΅Π΅ TCP, Π±ΡΡΠ΅ΡΡ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
- Γ8β10 ΠΏΡΠΈΡΠΎΡΡ RPS.
3β£ Pool ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² + ΡΠ²Π½ΡΠΉ ΡΠ±ΡΠΎΡ
- sync.Pool Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ.
- ΠΡΠΊΠ°Π· ΠΎΡ defer.
4β£ TΡΠ½ΠΈΠ½Π³ GOMAXPROCS + GOGC
- GOMAXPROCS= ΡΠ΄ΡΠ°.
- GOGC=200β300.
5β£ ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ pprof benchstat
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΠ°Π½Ρ Π΄Π΅ΡΠΆΠΈΡ 200000 RPS Ρ P50 < 1ΠΌΡ ΠΈ P99 < 2ΠΌΡ.
π ΠΠΎΠ»Π½Π°Ρ ΡΡΠ°ΡΡΡ: https://medium.com/@nikitaburov/how-to-easily-handle-200k-rps-with-golang-8b62967a01dd